package com.xiaoxu.security.custom;


import com.xiaoxu.common.utils.MD5;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;

//自定义加密组件
//通过自定义加密MD5 密码加密组件
@Component
public class CustomMd5PasswordEncoder  implements PasswordEncoder {
    /**
     * 对输入的密码进行编码处理。
     *
     * @param rawPassword 原始密码，类型为 CharSequence，保证不为空。
     * @return 编码后的密码字符串，使用 MD5 算法进行加密。
     */
    public String encode(CharSequence rawPassword) {
        // 使用 MD5 算法加密原始密码
        return MD5.encrypt(rawPassword.toString());
    /**
     * 检查输入的明文密码是否与已编码的密码匹配。
     *
     * @param rawPassword 用户输入的明文密码。
     * @param encodedPassword 存储的已编码密码（例如，MD5编码）。
     * @return 如果明文密码经过相同编码后与存储的密码相匹配，则返回true；否则返回false。
     */
}
    /**
     * 检查提供的原始密码是否与经过MD5加密的密码匹配。
     *
     * @param rawPassword 原始密码，未加密的字符串形式。
     * @param encodedPassword 经过MD5加密的密码字符串。
     * @return 如果原始密码经过MD5加密后与提供的加密密码字符串匹配，则返回true；否则返回false。
     */

    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        return encodedPassword.equals(MD5.encrypt(rawPassword.toString()));
    }
}
